import store from "../../store/index";

/**
 * 获取系统信息工具类
 */
export default class SystemUtil{
    /**
     * 获取系统信息实例
     * 
     * @param {boolean} withCache true = 使用缓存数据
     * @returns {SystemInfo}
     */
    static getSystemInfo(withCache = true){
        let sysInfo = store.global('appSysInfo')
        if(withCache && (sysInfo instanceof SystemInfo)){
            return sysInfo
        }
        sysInfo = new SystemInfo(wx.getSystemInfoSync())
        store.global('appSysInfo', sysInfo)
        return sysInfo
    }
}

/**
 * 系统信息
 */
class SystemInfo {
    /**
     * @property {string} 设备品牌 1.5.0
     */
    brand
    /**
     * @property {string} 设备型号 
     */
    model
    /**
     * @property {number} 设备像素比 
     */
    pixelRatio
    /**
     * @property {number} 屏幕宽度，单位px 1.1.0
     */
    screenWidth
    /**
     * @property {number} 屏幕高度，单位px 1.1.0
     */
    screenHeight
    /**
     * @property {number} 可使用窗口宽度，单位px 
     */
    windowWidth
    /**
     * @property {number} 可使用窗口高度，单位px 
     */
    windowHeight
    /**
     * @property {number} 状态栏的高度，单位px 1.9.0
     */
    statusBarHeight
    /**
     * @property {string} 微信设置的语言 
     */
    language
    /**
     * @property {string} 微信版本号 
     */
    version
    /**
     * @property {string} 操作系统及版本 
     */
    system
    /**
     * @property {string} 客户端平台 
     */
    platform
    /**
     * @property {number} 用户字体大小（单位px）。以微信客户端「我-设置-通用-字体大小」中的设置为准 1.5.0
     */
    fontSizeSetting
    /**
     * @property {string} 客户端基础库版本 1.1.0
     */
    SDKVersion
    /**
     * @property {number} 设备性能等级（仅Android小游戏）。取值为：-2 或 0（该设备无法运行小游戏），-1（性能未知），>=1（设备性能值，该值越高，设备性能越好，目前最高不到50） 1.8.0
     */
    benchmarkLevel
    /**
     * @property {boolean} 允许微信使用相册的开关（仅 iOS 有效） 2.6.0
     */
    albumAuthorized
    /**
     * @property {boolean} 允许微信使用摄像头的开关 2.6.0
     */
    cameraAuthorized
    /**
     * @property {boolean} 允许微信使用定位的开关 2.6.0
     */
    locationAuthorized
    /**
     * @property {boolean} 允许微信使用麦克风的开关 2.6.0
     */
    microphoneAuthorized
    /**
     * @property {boolean} 允许微信通知的开关 2.6.0
     */
    notificationAuthorized
    /**
     * @property {boolean} 允许微信通知带有提醒的开关（仅 iOS 有效） 2.6.0
     */
    notificationAlertAuthorized
    /**
     * @property {boolean} 允许微信通知带有标记的开关（仅 iOS 有效） 2.6.0
     */
    notificationBadgeAuthorized
    /**
     * @property {boolean} 允许微信通知带有声音的开关（仅 iOS 有效） 2.6.0
     */
    notificationSoundAuthorized
    /**
     * @property {boolean} 蓝牙的系统开关 2.6.0
     */
    bluetoothEnabled
    /**
     * @property {boolean} 地理位置的系统开关 2.6.0
     */
    locationEnabled
    /**
     * @property {boolean} Wi-Fi 的系统开关 2.6.0
     */
    wifiEnabled
    /**
     * @property {Object} 在竖屏正方向下的安全区域 2.7.0
     */
    safeArea

    constructor(initData) {
        Object.keys(initData).forEach(prop => {
            if (prop === 'safeArea') {
                this.safeArea = new ScreenArea(initData.safeArea)
            } else {
                this[prop] = initData[prop]
            }
        })
    }
}
/**
 * 屏幕区域
 */
class ScreenArea {
    /**
 * @property {number} 安全区域左上角横坐标
 */
    left
    /**
     * @property {number} 安全区域右下角横坐标
     */
    right
    /**
     * @property {number} 安全区域左上角纵坐标
     */
    top
    /**
     * @property {number} 安全区域右下角纵坐标
     */
    bottom
    /**
     * @property {number} 安全区域的宽度，单位逻辑像素
     */
    width
    /**
     * @property {number} 安全区域的高度，单位逻辑像素
     */
    height
    constructor(initData){
        Object.keys(initData).forEach(prop=>{
            this[prop] = initData[prop]
        })
    }
}

class EnvObject
{

}